"""
迭代器是一个可以被逐个访问的对象
两个方法
__iter__() : 返回迭代器对象本身。
__next__() : 返回下一个值，如果没有，则抛出 StopIteration
"""


# list1 = [1, 2, 3, 4]
# iterator = iter(list1)  # 创建迭代器对象


# print(next(iterator))#调用next方法获取下一个值
# print(next(iterator))

# 自定义迭代器
class MyRange:
    def __init__(self, start, end, step=1):
        self.current = start
        self.end = end
        self.step = step

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            val = self.current
            self.current += 1
            return val
        else:
            raise StopIteration  # 停止迭代


for i in MyRange(1, 5):
    print(i)  # 输出 1 到 4
